Allocate space for the focus rectangle only if necessary. (#142668,
authorMatthias Clasen <mclasen@redhat.com>
Mon, 17 May 2004 18:51:24 +0000 (18:51 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Mon, 17 May 2004 18:51:24 +0000 (18:51 +0000)
2004-05-17  Matthias Clasen  <mclasen@redhat.com>

* gtk/gtkbutton.c (gtk_button_size_request)
(gtk_button_size_allocate, _gtk_button_paint): Allocate
space for the focus rectangle only if necessary.  (#142668,
Michael Natterer)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkbutton.c

index e50ea1f57e3a8845dda7f7b5a880da3f1366e691..f188965b9f063a1973aa1cab3e095404d82e0266 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2004-05-17  Matthias Clasen  <mclasen@redhat.com>
+
+        Mreged from 2.4:
+       
+       * gtk/gtkbutton.c (gtk_button_size_request) 
+       (gtk_button_size_allocate, _gtk_button_paint): Allocate
+       space for the focus rectangle only if necessary.  (#142668,
+       Michael Natterer)
+
 Sun May 16 23:11:47 2004  Matthias Clasen  <maclas@gmx.de>
 
        Merged from 2.4:
index e50ea1f57e3a8845dda7f7b5a880da3f1366e691..f188965b9f063a1973aa1cab3e095404d82e0266 100644 (file)
@@ -1,3 +1,12 @@
+2004-05-17  Matthias Clasen  <mclasen@redhat.com>
+
+        Mreged from 2.4:
+       
+       * gtk/gtkbutton.c (gtk_button_size_request) 
+       (gtk_button_size_allocate, _gtk_button_paint): Allocate
+       space for the focus rectangle only if necessary.  (#142668,
+       Michael Natterer)
+
 Sun May 16 23:11:47 2004  Matthias Clasen  <maclas@gmx.de>
 
        Merged from 2.4:
index e50ea1f57e3a8845dda7f7b5a880da3f1366e691..f188965b9f063a1973aa1cab3e095404d82e0266 100644 (file)
@@ -1,3 +1,12 @@
+2004-05-17  Matthias Clasen  <mclasen@redhat.com>
+
+        Mreged from 2.4:
+       
+       * gtk/gtkbutton.c (gtk_button_size_request) 
+       (gtk_button_size_allocate, _gtk_button_paint): Allocate
+       space for the focus rectangle only if necessary.  (#142668,
+       Michael Natterer)
+
 Sun May 16 23:11:47 2004  Matthias Clasen  <maclas@gmx.de>
 
        Merged from 2.4:
index e50ea1f57e3a8845dda7f7b5a880da3f1366e691..f188965b9f063a1973aa1cab3e095404d82e0266 100644 (file)
@@ -1,3 +1,12 @@
+2004-05-17  Matthias Clasen  <mclasen@redhat.com>
+
+        Mreged from 2.4:
+       
+       * gtk/gtkbutton.c (gtk_button_size_request) 
+       (gtk_button_size_allocate, _gtk_button_paint): Allocate
+       space for the focus rectangle only if necessary.  (#142668,
+       Michael Natterer)
+
 Sun May 16 23:11:47 2004  Matthias Clasen  <maclas@gmx.de>
 
        Merged from 2.4:
index f60fb6820ba0b8e0a33b7f4ad964574cbfee7ed3..e049b8c6e5df30ea6c6e43574207bc85204dd5d5 100644 (file)
@@ -915,8 +915,11 @@ gtk_button_size_request (GtkWidget      *widget,
       requisition->height += child_requisition.height;
     }
   
-  requisition->width += 2 * (focus_width + focus_pad);
-  requisition->height += 2 * (focus_width + focus_pad);
+  if (!interior_focus && GTK_WIDGET_CAN_FOCUS (widget))
+    {
+      requisition->width += 2 * (focus_width + focus_pad);
+      requisition->height += 2 * (focus_width + focus_pad);
+    }
 }
 
 static void
@@ -932,8 +935,9 @@ gtk_button_size_allocate (GtkWidget     *widget,
   GtkBorder default_border;
   gint focus_width;
   gint focus_pad;
+  gboolean interior_focus;
 
-  gtk_button_get_props (button, &default_border, NULL, NULL);
+  gtk_button_get_props (button, &default_border, NULL, &interior_focus);
   gtk_widget_style_get (GTK_WIDGET (widget),
                        "focus-line-width", &focus_width,
                        "focus-padding", &focus_pad,
@@ -966,11 +970,14 @@ gtk_button_size_allocate (GtkWidget     *widget,
          child_allocation.width =  MAX (1, child_allocation.width - default_border.left - default_border.right);
          child_allocation.height = MAX (1, child_allocation.height - default_border.top - default_border.bottom);
        }
-
-      child_allocation.x += focus_width + focus_pad;
-      child_allocation.y += focus_width + focus_pad;
-      child_allocation.width =  MAX (1, child_allocation.width - (focus_width + focus_pad) * 2);
-      child_allocation.height = MAX (1, child_allocation.height - (focus_width + focus_pad) * 2);
+      
+      if (!interior_focus && GTK_WIDGET_CAN_FOCUS (widget))
+       {      
+         child_allocation.x += focus_width + focus_pad;
+         child_allocation.y += focus_width + focus_pad;
+         child_allocation.width =  MAX (1, child_allocation.width - (focus_width + focus_pad) * 2);
+         child_allocation.height = MAX (1, child_allocation.height - (focus_width + focus_pad) * 2);
+       }
 
       if (button->depressed)
        {
@@ -1044,7 +1051,7 @@ _gtk_button_paint (GtkButton    *button,
          height -= default_outside_border.top + default_outside_border.bottom;
        }
        
-      if (!interior_focus && GTK_WIDGET_HAS_FOCUS (widget))
+      if (!interior_focus && GTK_WIDGET_CAN_FOCUS (widget))
        {
          x += focus_width + focus_pad;
          y += focus_width + focus_pad;